acbmname$="spielbild" REM IF FRE(1)<30000& THEN CLEAR,,30000& DIM bPlane&(5), cTabWork%(32), cTabSave%(32) DECLARE FUNCTION xOpen& LIBRARY DECLARE FUNCTION xRead& LIBRARY DECLARE FUNCTION xWrite& LIBRARY DECLARE FUNCTION AllocMem&() LIBRARY LIBRARY "dos.library" LIBRARY "exec.library" LIBRARY "graphics.library" loadError$ = "" GOSUB LoadACBM IF loadError$ <> "" THEN GOTO Mcleanup IF foundCCRT AND ccrtDir% THEN FOR kk = 0 TO nColors% -1 cTabSave%(kk) = PEEKW(colorTab&+(kk*2)) cTabWork%(kk) = cTabSave%(kk) NEXT FOR kk = 0 TO 80 IF ccrtDir% = 1 THEN GOSUB Fcycle ELSE GOSUB Bcycle END IF CALL LoadRGB4&(sViewPort&,VARPTR(cTabWork%(0)),nColors%) FOR de1 = 0 TO ccrtSecs& * 3000 FOR de2 = 0 TO ccrtMics& / 500 NEXT NEXT NEXT CALL LoadRGB4&(sViewPort&,VARPTR(cTabSave%(0)),nColors%) END IF Mcleanup: GOTO spielanfang: Mcleanup2: REM LIBRARY CLOSE IF loadError$ <> "" THEN PRINT loadError$ END cTemp% = cTabWork%(ccrtEnd%) FOR jj = ccrtEnd%-1 TO ccrtStart% STEP -1 cTabWork%(jj+1) = cTabWork%(jj) NEXT cTabWork%(ccrtStart%) = cTemp% RETURN Fcycle: '" Farbzyklus vorwärts (forward) cTemp% = cTabWork%(ccrtStart%) FOR jj = ccrtStart%+1 TO ccrtEnd% cTabWork%(jj-1) = cTabWork%(jj) NEXT cTabWork%(ccrtEnd%) = cTemp% RETURN LoadACBM: '" - Folgende Variablen müssen '" - initialisiert sein: REM - ACBMname$ (ACBM-Dateiname) REM - Variablen initialisieren f$ = acbmname$ fHandle& = 0 mybuf& = 0 foundBMHD = 0 foundCMAP = 0 foundCAMG = 0 foundCCRT = 0 foundABIT = 0 REM - aus include/libraries/dos.h REM - MODE_NEWFILE = 1006 REM - MODE_OLDFILE = 1005 filename$ = f$ + CHR$(0) fHandle& = xOpen&(SADD(filename$),1005) IF fHandle& = 0 THEN loadError$ = "Eingabedatei nicht gefunden/lesbar." GOTO Lcleanup END IF REM - Pufferspeicherplatz reservieren ClearPublic& = 65537 mybufsize& = 360 mybuf& = AllocMem&(mybufsize&,ClearPublic&) IF mybuf& = 0 THEN loadError$ = "Pufferspeicherplatz nicht verfügbar." GOTO Lcleanup END IF inbuf& = mybuf& cbuf& = mybuf& + 120 ctab& = mybuf& + 240 REM - Eingabe sollte lauten FORMnnnnACBM rLen& = xRead&(fHandle&,inbuf&,12) tt$ = "" FOR kk = 8 TO 11 tt% = PEEK(inbuf& + kk) tt$ = tt$ + CHR$(tt%) NEXT IF tt$ <> "ACBM" THEN loadError$ = "Keine ACBM-Grafikdatei." GOTO Lcleanup END IF REM - ACBM-Datei Chunk-weise lesen ChunkLoop: REM - Chunk-Name/Länge ermitteln rLen& = xRead&(fHandle&,inbuf&,8) icLen& = PEEKL(inbuf& + 4) tt$ = "" FOR kk = 0 TO 3 tt% = PEEK(inbuf& + kk) tt$ = tt$ + CHR$(tt%) NEXT IF tt$ = "BMHD" THEN 'BitMap-Header foundBMHD = 1 rLen& = xRead&(fHandle&,inbuf&,icLen&) iWidth% = PEEKW(inbuf&) iHeight% = PEEKW(inbuf& + 2) iDepth% = PEEK(inbuf& + 8) iCompr% = PEEK(inbuf& + 10) scrWidth% = PEEKW(inbuf& + 16) scrHeight% = PEEKW(inbuf& + 18) iRowBytes% = iWidth% /8 scrRowBytes% = scrWidth% / 8 nColors% = 2^(iDepth%) '" - Genug Platz für Videospeicher ? AvailRam& = FRE(-1) NeededRam& = ((scrWidth%/8)*scrHeight%*(iDepth%+1))+5000 IF AvailRam& < NeededRam& THEN loadError$ = "Speicherplatz reicht nicht aus." GOTO Lcleanup END IF kk = 1 IF scrWidth% > 320 THEN kk = kk + 1 IF scrHeight% > 200 THEN kk = kk + 2 SCREEN 2,scrWidth%,scrHeight%,5,1 WINDOW 2,"",,0,2 CALL freesprite (0) REM - Adressen von Screen-Structures ermitteln GOSUB GetScrAddrs REM - Schirm während Ladevorgang dunkel CALL LoadRGB4&(sViewPort&,ctab&,nColors%) ELSEIF tt$ = "CMAP" THEN 'Farbpalette foundCMAP = 1 rLen& = xRead&(fHandle&,cbuf&,icLen&) REM - Farbpalette aufbauen FOR kk = 0 TO nColors% - 1 red% = PEEK(cbuf&+(kk*3)) gre% = PEEK(cbuf&+(kk*3)+1) blu% = PEEK(cbuf&+(kk*3)+2) regTemp% = (red%*16)+(gre%)+(blu%/16) POKEW(ctab&+(2*kk)),regTemp% NEXT ELSEIF tt$ = "CAMG" THEN 'Amiga ViewPort Modes foundCAMG = 1 rLen& = xRead&(fHandle&,inbuf&,icLen&) camgModes& = PEEKL(inbuf&) ELSEIF tt$ = "CCRT" THEN 'Graphicraft-Farbzyklus-Daten foundCCRT = 1 rLen& = xRead&(fHandle&,inbuf&,icLen&) ccrtDir% = PEEKW(inbuf&) ccrtStart% = PEEK(inbuf& + 2) ccrtEnd% = PEEK(inbuf& + 3) ccrtSecs& = PEEKL(inbuf& + 4) ccrtMics& = PEEKL(inbuf& + 8) ELSEIF tt$ = "ABIT" THEN 'Contiguous BitMap foundABIT = 1 '" - Hier werden nur volle BitMaps verarbeitet, keine '" - Ausschnitte wie z.B. Pinsel (Brushes). '" - Sehr schnell, liest ganze BitPlanes. plSize& = (scrWidth%/8) * scrHeight% FOR pp = 0 TO iDepth% -1 rLen& = xRead&(fHandle&,bPlane&(pp),plSize&) NEXT ELSE REM - unbekannten Chunk-Typ lesen FOR kk = 1 TO icLen& rLen& = xRead&(fHandle&,inbuf&,1) NEXT '" - Wenn Länge ungerade, noch 1 Byte lesen IF (icLen& OR 1) = icLen& THEN rLen& = xRead&(fHandle&,inbuf&,1) END IF END IF REM - Fertig, wenn alle Chunks gelesen IF foundBMHD AND foundCMAP AND foundABIT THEN GOTO GoodLoad END IF REM - Lesen ok, nächsten Chunk lesen IF rLen& > 0 THEN GOTO ChunkLoop IF rLen& < 0 THEN ' Lesefehler loadError$ = "Lesefehler." GOTO Lcleanup END IF REM - rLen& = 0 heißt EOF (Dateiende) IF (foundBMHD=0) OR (foundABIT=0) OR (foundCMAP=0) THEN loadError$ = "Wichtige IFF-Chunks nicht gefunden." GOTO Lcleanup END IF GoodLoad: loadError$ ="" REM Farbpalette IF foundCMAP THEN CALL LoadRGB4&(sViewPort&,ctab&,nColors%) END IF Lcleanup: IF fHandle& <> 0 THEN CALL xClose&(fHandle&) IF mybuf& <> 0 THEN CALL FreeMem&(mybuf&,mybufsize&) RETURN GetScrAddrs: REM - Adressen von Screen-Structures ermitteln sWindow& = WINDOW(7) sScreen& = PEEKL(sWindow& + 46) sViewPort& = sScreen& + 44 sRastPort& = sScreen& + 84 sColorMap& = PEEKL(sViewPort& + 4) colorTab& = PEEKL(sColorMap& + 4) sBitMap& = PEEKL(sRastPort& + 4) REM - Screen-Parameter ermitteln scrWidth% = PEEKW(sScreen& + 12) scrHeight% = PEEKW(sScreen& + 14) scrDepth% = PEEK(sBitMap& + 5) nColors% = 2^scrDepth% REM - Adressen der BitPlanes ermitteln FOR kk = 0 TO scrDepth% - 1 bPlane&(kk) = PEEKL(sBitMap&+8+(kk*4)) NEXT RETURN spielanfang: IF spielgewinn=1 THEN SLEEP:SYSTEM POKE &Hdff0*256+&H96,32 DEFLNG a-z DECLARE FUNCTION opendiskfont&() LIBRARY LIBRARY "diskfont.library" altfont=PEEKL(WINDOW(8)+52) neufont$="amber.font"+CHR$(0) hoehe=9:pref=26 text(0)=SADD(neufont$) text(1)=(2^16)*hoehe+pref font=opendiskfont&(VARPTR(text(0))) IF font<>0 THEN CALL setfont&(WINDOW(8),font) PALETTE 17,0,0,0 PALETTE 18,0,0,0 PALETTE 19,0,0,0 PALETTE 7,0.1,0.1,0.5 PALETTE 15,0.23,0.23,0.23 PALETTE 6,0.4,0,0.23 PALETTE 4,0.9,0.9,0.3 RANDOMIZE TIMER sklaven=100:kk=500 jahre=1:anerkennung=1:pyramide=0 GOSUB sharewaremitteilung GOSUB inhalt gesamtuebersicht: jahre=jahre+1 sauber LOCATE 6,6:PRINT "Sie haben:" COLOR 15,10: LOCATE 8,6:PRINT "Sklaven:": COLOR 6,10:LOCATE 8,20 PRINT USING "####";sklaven COLOR 15,10:LOCATE 10,6:PRINT "Kamele:" COLOR 6,10:LOCATE 10,20 PRINT USING "####";kamele COLOR 15,10:LOCATE 12,6:PRINT "Boote:" COLOR 6,10:LOCATE 12,20 PRINT USING "####";boote COLOR 15,10:LOCATE 14,6:PRINT "Korn Kisten:" COLOR 6,10:LOCATE 14,20:PRINT USING "####";kk COLOR 15,10:LOCATE 16,6:PRINT "Pyramide:" LOCATE 17,6:PRINT "in %" COLOR 6,10:LOCATE 16,20:PRINT INT(pyramide) feld=0:pyramidenbau=0:steinbruch=0 SLEEP:SLEEP IF anerkennung=1 AND jahre<=30 AND pyramide>=5 THEN GOTO bonusrunde IF jahre>=40 AND pyramide<=7 THEN GOTO pharaotot sauber arbeitereinteilung: LOCATE 6,6 PRINT "Sklaven Einteilung:" COLOR 15,10 LOCATE 8,6 PRINT "Steinbruch:" COLOR 7,10:LOCATE 8,23:PRINT USING "####";steinbruch COLOR 15,10:LOCATE 10,6:PRINT "Feld:" COLOR 7,10:LOCATE 10,23:PRINT USING "####";feld COLOR 15,10:LOCATE 12,6:PRINT "Pyramidenbau:" COLOR 7,10:LOCATE 12,23:PRINT USING "####";pyramidenbau COLOR 15,10:LOCATE 14,6:PRINT "Sklaven gesamt:" COLOR 7,10:LOCATE 14,23:PRINT USING "####";sklaven COLOR 13,10 LOCATE 16,6:PRINT "1 -> Steinbruch" LOCATE 17,6:PRINT "2 -> Feld" LOCATE 18,6:PRINT "3 -> Pyramidenbau" LOCATE 19,6:PRINT "4 -> Weiter" arbeitereinteilungtastenabrage: a$=INKEY$ IF a$="1" THEN arbeitersteinbruch IF a$="2" THEN arbeiterfeld IF a$="3" THEN arbeiterpyramidenbau IF a$="4" THEN arbeiteressengeben GOTO arbeitereinteilungtastenabrage arbeitersteinbruch: LINE (30,130)-(270,175),10,bf COLOR 13,10 LOCATE 17,6:PRINT "Steinbruchsklaven:" COLOR 6,10 LOCATE 18,10:INPUT "",steinbruch IF steinbruch+feld+pyramidenbau>sklaven THEN LOCATE 18,10:PRINT SPACE$(5):GOTO arbeitersteinbruch END IF LINE (30,130)-(270,175),10,bf GOTO arbeitereinteilung arbeiterfeld: LINE (30,130)-(270,175),10,bf COLOR 13,10 LOCATE 17,6:PRINT "Feldsklaven:" COLOR 6,10 LOCATE 18,10:INPUT "",feld IF steinbruch+feld+pyramidenbau>sklaven THEN LOCATE 18,10:PRINT SPACE$(5):GOTO arbeiterfeld END IF LINE (30,130)-(270,175),10,bf GOTO arbeitereinteilung arbeiterpyramidenbau: LINE (30,130)-(270,175),10,bf COLOR 13,10 LOCATE 17,6:PRINT "Pyramidensklaven:" COLOR 6,10 LOCATE 18,10:INPUT "",pyramidenbau IF steinbruch+feld+pyramidenbau>sklaven THEN LOCATE 18,10:PRINT SPACE$(5):GOTO arbeiterpyramidenbau END IF LINE (30,130)-(270,175),10,bf GOTO arbeitereinteilung arbeiteressengeben: sauber LOCATE 6,6 PRINT "Essens Einteilung:" COLOR 15,10 LOCATE 8,6 PRINT "Sie haben ";kk LOCATE 10,6 PRINT "Kisten Korn" LOCATE 12,6 PRINT "Wieviel sollen die " LOCATE 14,6 PRINT "Sklaven zum Essen " LOCATE 16,6 PRINT "bekommen ?" sklavenversorgung: COLOR 6,10:LOCATE 18,10 INPUT "",essen IF essen>kk THEN LOCATE 18,10:PRINT SPACE$(5):GOTO sklavenversorgung END IF kk=kk-essen SLEEP:SLEEP GOTO sklavengestorben: sklavengestorben: essentot=sklaven-essen IF essen<=sklaven THEN sklaventot=RND(1)*essentot+8 IF essen>=sklaven THEN sklaventot=RND(1)*5 IF sklaventot<=0 THEN sklaventot=1 IF sklaventot>=sklaven THEN sklaventot=sklaven:sklaven=0 sauber LOCATE 6,6:PRINT "Slavenverluste:" COLOR 15,10:LOCATE 8,6:PRINT "Sie gaben den" LOCATE 9,6:PRINT "Sklaven :":COLOR 7,10:LOCATE 9,21:PRINT USING "#####";essen COLOR 15,10:LOCATE 10,6:PRINT "Kisten Korn" LOCATE 12,6:PRINT "An Krankheiten und" LOCATE 13,6:PRINT "Arbeit sind ihnen" LOCATE 14,6:PRINT "dieses Jahr: ":COLOR 7,10 LOCATE 14,21:PRINT USING "#####";sklaventot COLOR 15,10:LOCATE 15,6:PRINT "Sklaven gestorben" sklaven=sklaven-sklaventot IF sklaven<=0 THEN sklaven=0:sklaventot=0 LOCATE 17,6:PRINT "Sie haben noch:":COLOR 7,10 LOCATE 17,21:PRINT USING "#####";sklaven COLOR 15,10:LOCATE 18,6:PRINT "Sklaven" SLEEP:SLEEP GOTO kostenkameleboote kostenkameleboote: sauber kamelfressen=kamele*2 bootwartungskosten=boote*3 kk=kk-(kamelfressen+bootwartungskosten) IF kk<=0 THEN bootpfaendung LOCATE 6,6 PRINT "Unkosten:" COLOR 15,10 LOCATE 8,6:PRINT "Die Kamele" LOCATE 9,6:PRINT "fressen:":COLOR 7,10:LOCATE 9,21 PRINT USING "#####";kamelfressen COLOR 15,10:LOCATE 10,6:PRINT "Kisten Korn" LOCATE 12,6:PRINT "Die Wartung der" LOCATE 13,6:PRINT "Boote kostet:":COLOR 7,10 LOCATE 13,21:PRINT USING "#####";bootwartungskosten COLOR 15,10:LOCATE 14,6:PRINT "Korn Kisten" LOCATE 16,6:PRINT "Sie haben:":COLOR 7,10:LOCATE 16,21 PRINT USING "#####";kk COLOR 15,10:LOCATE 17,6:PRINT "Korn Kisten" SLEEP:SLEEP GOTO bootekamelekaufen: bootekamelekaufen: sauber LOCATE 6,6 PRINT "Markttag:" COLOR 15,10 LOCATE 8,6:PRINT "Sie haben:" COLOR 15,10: LOCATE 10,6:PRINT "Sklaven:": COLOR 7,10:LOCATE 10,20 PRINT USING "####";sklaven COLOR 15,10:LOCATE 11,6:PRINT "Kamele:" COLOR 7,10:LOCATE 11,20 PRINT USING "####";kamele COLOR 15,10:LOCATE 12,6:PRINT "Boote:" COLOR 7,10:LOCATE 12,20 PRINT USING "####";boote COLOR 15,10:LOCATE 13,6:PRINT "Korn Kisten:" COLOR 7,10:LOCATE 13,20:PRINT USING "####";kk COLOR 13,10 LOCATE 16,6:PRINT "1 -> Boote handeln" LOCATE 17,6:PRINT "2 -> Kamele handeln" LOCATE 18,6:PRINT "3 -> Sklaven handeln" LOCATE 19,6:PRINT "4 -> Weiter" bootekameletastenabfrage: a$=INKEY$ IF a$="1" THEN bootehandeln IF a$="2" THEN kamelehandeln IF a$="3" THEN sklavenhandeln IF a$="4" THEN kornernte GOTO bootekameletastenabfrage bootehandeln: IF booteanzeige=1 THEN booteanzeigen bootpreis=(kk*RND(2)+boote) IF bootpreis<=30 THEN bootpreis=50 bootkaufpreis=(kk*RND(2)-kk*RND(1)) IF bootkaufpreis<=30 THEN bootkaufpreis=50 IF bootkaufpreis>bootpreis THEN bootehandeln booteanzeige=1 booteanzeigen: sauber booteanzeigen1: LOCATE 6,6:PRINT "Boote handeln" COLOR 15,10:LOCATE 8,6 PRINT "Der Makler nimmt" LOCATE 9,6:PRINT "folgende Preise:" LOCATE 11,6:PRINT "Boot kaufen: " COLOR 2,10:LOCATE 11,21:PRINT USING "####";bootpreis COLOR 15,10:LOCATE 12,6:PRINT "Boot verkaufen:" COLOR 2,10:LOCATE 12,21:PRINT USING "####";bootkaufpreis COLOR 2,10:LOCATE 14,6:PRINT "Sie haben:":COLOR 15,10 LOCATE 15,6:PRINT "Boote:":COLOR 7,10 LOCATE 15,21:PRINT USING "####";boote COLOR 15,10:LOCATE 16,6:PRINT "Korn Kisten:":COLOR 7,10 LOCATE 16,21:PRINT USING "####";kk COLOR 13,10:LOCATE 17,6:PRINT "1 -> Boot kaufen" LOCATE 18,6:PRINT "2 -> Boot verkaufen" LOCATE 19,6:PRINT "3 -> Weiter" bootehandelntastaturabfrage: a$=INKEY$ IF a$="1" THEN bootkaufen IF a$="2" THEN bootverkaufen IF a$="3" THEN bootekamelekaufen GOTO bootehandelntastaturabfrage bootkaufen: IF kkkamelpreis THEN kamelehandeln kameleanzeige=1 kameleanzeigen: sauber kameleanzeigen1: LOCATE 6,6:PRINT "Kamele handeln" COLOR 15,10:LOCATE 8,6 PRINT "Der Makler nimmt" LOCATE 9,6:PRINT "folgende Preise:" LOCATE 11,6:PRINT "Kamel kaufen: " COLOR 2,10:LOCATE 11,23:PRINT USING "####";kamelpreis COLOR 15,10:LOCATE 12,6:PRINT "Kamel verkaufen:" COLOR 2,10:LOCATE 12,23:PRINT USING "####";kamelkaufpreis COLOR 2,10:LOCATE 14,6:PRINT "Sie haben:":COLOR 15,10 LOCATE 15,6:PRINT "Kamele:":COLOR 7,10 LOCATE 15,23:PRINT USING "####";kamele COLOR 15,10:LOCATE 16,6:PRINT "Korn Kisten:":COLOR 7,10 LOCATE 16,23:PRINT USING "####";kk COLOR 13,10:LOCATE 17,6:PRINT "1 -> Kamel kaufen" LOCATE 18,6:PRINT "2 -> Kamel verkaufen" LOCATE 19,6:PRINT "3 -> Weiter" kamelhandelntastaturabfrage: a$=INKEY$ IF a$="1" THEN kamelkaufen IF a$="2" THEN kameleverkaufen IF a$="3" THEN bootekamelekaufen GOTO kamelhandelntastaturabfrage kamelkaufen: IF kksklavenpreis THEN sklavenhandeln sklavenanzeige=1 sklavenanzeigen: sauber sklavenanzeigen1: LOCATE 6,6:PRINT "Sklaven handeln" COLOR 15,10:LOCATE 8,6 PRINT "Der Makler nimmt" LOCATE 9,6:PRINT "folgende Preise:" LOCATE 11,6:PRINT "Sklave kaufen: " COLOR 2,10:LOCATE 11,23:PRINT USING "####";sklavenpreis COLOR 15,10:LOCATE 12,6:PRINT "Sklave verkaufen:" COLOR 2,10:LOCATE 12,23:PRINT USING "####";sklavenkaufpreis COLOR 2,10:LOCATE 14,6:PRINT "Sie haben:":COLOR 15,10 LOCATE 15,6:PRINT "Sklaven:":COLOR 7,10 LOCATE 15,23:PRINT USING "####";sklaven COLOR 15,10:LOCATE 16,6:PRINT "Korn Kisten:":COLOR 7,10 LOCATE 16,23:PRINT USING "####";kk COLOR 13,10:LOCATE 17,6:PRINT "1 -> Sklave kaufen" LOCATE 18,6:PRINT "2 -> Sklave verkaufen" LOCATE 19,6:PRINT "3 -> Weiter" sklavenhandelntastaturabfrage: a$=INKEY$ IF a$="1" THEN sklavenkaufen IF a$="2" THEN sklavenverkaufen IF a$="3" THEN bootekamelekaufen GOTO sklavenhandelntastaturabfrage sklavenkaufen: IF kksteinlager THEN boottransport=steinlager:steinlager=0:GOTO foerderanzeige1 steinlager=steinlager-boottransport IF steinlager<=0 THEN kameltransport=0:GOTO foerderanzeige1 kameltransport=3*kamele IF kameltransport>steinlager THEN kameltransport=steinlager:steinlager=0:GOTO foerderanzeige1 steinlager=steinlager-kameltransport foerderanzeige1: LOCATE 6,6:PRINT "Transport:" COLOR 15,10:LOCATE 8,6 PRINT "Steine im" LOCATE 9,6:PRINT "Lager: ":LOCATE 9,21:COLOR 7,10 PRINT USING "####";steinlager COLOR 15,10:LOCATE 11,6:PRINT "Folgende Steine":LOCATE 12,6 PRINT "koennen von Booten":LOCATE 13,6 PRINT "und Kamelen abgeholt":LOCATE 14,6:PRINT "werden:" LOCATE 16,6:PRINT "Boote: ":LOCATE 16,21:COLOR 7,10 PRINT USING "####";boottransport COLOR 15,10:LOCATE 18,6:PRINT "Kamele:":LOCATE 18,21:COLOR 7,10 PRINT USING "####";kameltransport SLEEP:SLEEP GOTO pyramidenbauanzeige pyramidenbauanzeige: sauber IF pyramidenbau<>0 THEN verbrauchtesteine=INT(pyramidenbau/4) :ELSE verbrauchtesteine=0 pyramidensteine=pyramidensteine+kameltransport+boottransport-verbrauchtesteine IF pyramidensteine<=0 THEN verbrauchtesteine=pyramidensteine IF verbrauchtesteine>pyramidensteine THEN verbrauchtesteine=pyramidensteine rechensteine=rechensteine+verbrauchtesteine IF pyramide>99 THEN spielgewinn pyramide=rechensteine*100/1000 LOCATE 6,6:PRINT "Pyramidenbau:" COLOR 15,10:LOCATE 8,6 PRINT "Steine bei: ":LOCATE 8,23:COLOR 7,10:PRINT USING"####";pyramidensteine COLOR 15,10:LOCATE 9,6:PRINT "der Pyramide" COLOR 15,10:LOCATE 11,6:PRINT "Verbrauchte":LOCATE 12,6:PRINT "Steine:" COLOR 7,10:LOCATE 12,23:PRINT USING "####";verbrauchtesteine COLOR 15,10:LOCATE 14,6:PRINT "Pyramide fertig:":LOCATE 15,6:PRINT "in %" COLOR 7,10:LOCATE 14,23:PRINT pyramide SLEEP:SLEEP GOTO gesamtuebersicht bootpfaendung: IF boote=0 THEN kamelpfaendung boote=boote-1:kk=kk+bootkaufpreis IF kk=kk<=0 THEN bootpfaendung GOTO pfaendungstart kamelpfaendung: IF kamele=0 THEN GOTO pfaendungstart kamele=kamele-1:kk=kk+kamelkaufpreis IF kk<=0 THEN kamelpfaendung pfaendungstart: IF kk<=0 THEN kk=0 sauber LOCATE 6,6:PRINT "Pfaendung:" COLOR 15,10 LOCATE 8,6:PRINT "Um ihre Schulden" LOCATE 10,6:PRINT "auszugleichen wurden " LOCATE 12,6:PRINT "Ihnen Boote und " LOCATE 14,6:PRINT "Kamele Gepfaendet !!!" SLEEP:SLEEP GOTO bootekamelekaufen: bonusrunde: sauber COLOR 15,10 anerkennungssklaven=RND(1)*40 anerkennung=0 LOCATE 6,6:PRINT "Der Hofmeister dankt" LOCATE 7,6:PRINT "Dir fuer Deine gute " LOCATE 8,6:PRINT "Arbeit und schenkt " LOCATE 9,6:PRINT "Dir als Anerkennung:" LOCATE 11,6:PRINT "Sklaven:":LOCATE 11,21:COLOR 7,10 PRINT USING "#####";anerkennungssklaven sklaven=sklaven+anerkennungssklaven SLEEP:SLEEP sauber GOTO arbeitereinteilung pharaotot: sauber LOCATE 6,6:PRINT "Der Pharao Cool Cat" LOCATE 7,6:PRINT "ist leider gestorben." LOCATE 8,6:PRINT "Da Sie die Pyramide " LOCATE 9,6:PRINT "noch nicht fertig " LOCATE 10,6:PRINT "haben, haben Sie " LOCATE 11,6:PRINT "jetzt keine gute " LOCATE 12,6:PRINT "Zukunft !!" LOCATE 13,6:PRINT "Leider ist ihr Leben" LOCATE 14,6:PRINT "nun zuende, und damit" LOCATE 15,6:PRINT "auch das Spiel !!" spielgewinn=1 SLEEP:SLEEP:SLEEP GOTO spielanfang spielgewinn: spielgewinn=1 sauber LOCATE 6,6:PRINT "Der Pharao Cool Cat" LOCATE 7,6:PRINT "ist hoch erfreut " LOCATE 8,6:PRINT "ueber Ihre so gute" LOCATE 9,6:PRINT "Arbeit. Als Lohn" LOCATE 10,6:PRINT "werden Sie nun mit" LOCATE 11,6:PRINT "Gold aufgewogen." LOCATE 12,6:PRINT "Ihnen steht eine" LOCATE 13,6:PRINT "erfolgreiche Zukunft" LOCATE 14,6:PRINT "ins Haus. Sie haben" LOCATE 15,6:PRINT "ausgesorgt !!" COLOR 7,10 LOCATE 17,6:PRINT "Herzlichen" LOCATE 18,7:PRINT "Glueckwunsch !!" SLEEP:SLEEP:SLEEP GOTO spielanfang SUB sp(schreib$) STATIC CALL text (WINDOW(8),SADD(schreib$),LEN(schreib$)) END SUB SUB sauber STATIC FOR i=1 TO 70 LINE (30+i,35+i)-(270-i,175-i),10,b REM FOR a=1 TO 200:NEXT NEXT LINE (30,130)-(270,175),10,bf COLOR 2,10 END SUB inhalt: sauber COLOR 2,10 LOCATE 6,10 CALL setdrmd&(WINDOW(8),0) POKE WINDOW (8)+56,2 PRINT "Pyramide " POKE WINDOW (8)+56,4 LOCATE 8,5:COLOR 7,10 CALL sp("Sie sind der Baumeister") LOCATE 9,5 CALL sp("von Pharao CoolCat.") LOCATE 10,5 CALL sp("Seine Zeit ist am Ende,") LOCATE 11,5 CALL sp("und Sie sollen ihm eine") LOCATE 12,5 CALL sp("Pyramide bauen. Wenn") LOCATE 13,5 CALL sp("Sie es schaffen, so") LOCATE 14,5 CALL sp("werden Sie mit Gold ") LOCATE 15,5 CALL sp("aufgewogen. Wenn Sie") LOCATE 16,5 CALL sp("jedoch versagen, so") LOCATE 17,5 CALL sp("dienen Sie als Futter") LOCATE 18,5 CALL sp("fuer die Krokodile !!") CALL setdrmd&(WINDOW(8),1) POKE WINDOW (8)+56,0 SLEEP:SLEEP RETURN sharewaremitteilung: COLOR 2,10 LOCATE 6,6 CALL setdrmd&(WINDOW(8),0) POKE WINDOW (8)+56,3 PRINT "Autorenmitteilung:" POKE WINDOW (8)+56,4 COLOR 15,10:LOCATE 8,6 PRINT "Dieses Spiel wurde" LOCATE 9,6 PRINT "programmiert von:" COLOR 4,10:LOCATE 10,7 PRINT "Martin Jochimczyk" LOCATE 11,7:PRINT "Am Sande 12" POKE WINDOW (8)+56,5 LOCATE 12,7:PRINT "D-2723 Scheessel" POKE WINDOW (8)+56,4 COLOR 15,10 LOCATE 14,6 PRINT "Solange mein Name" LOCATE 15,6 PRINT "im Programm bleibt" LOCATE 16,6 PRINT "darf das Programm " LOCATE 17,6 PRINT "weitergegeben werden" LOCATE 19,6:PRINT "Viel Spass!" SLEEP:SLEEP RETURN